import java.util.LinkedList;
import java.util.Queue;

/**
 * @author shuang
 * @date 2022/5/6 14:32
 * 933. 最近的请求次数
 * https://leetcode-cn.com/problems/number-of-recent-calls/
 */
public class Solutions_933 {
    public static void main(String[] args) {
        RecentCounter obj = new RecentCounter();
        int result1 = obj.ping(1);  // output: 1
        System.out.println(result1);

        int result2 = obj.ping(100);  // output: 2
        System.out.println(result2);

        int result3 = obj.ping(3001);  // output: 3
        System.out.println(result3);

        int result4 = obj.ping(3002);  // output: 3
        System.out.println(result4);
    }
}

class RecentCounter {

    private Queue<Integer> queue = null;

    public RecentCounter() {
        queue = new LinkedList<>();
    }

    public int ping(int t) {
        queue.add(t);
        // 淘汰过去 3000 毫秒外发生的所有请求
        while (queue.peek() + 3000 < t) {
            queue.poll();
        }
        // 保留的都是过去 3000 毫秒内发生的所有请求
        return queue.size();
    }
}
